package com.gl.buscaminas;

import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

import com.gl.buscaminas.exceptions.BuscaminasNoEncontradoException;
import com.gl.buscaminas.exceptions.MensajesException;

public class FabricaBuscaminasJuego {

	private static FabricaBuscaminasJuego instancia;
	private Map<String, BuscaminasJuego> buscaminasJuegos;

	private FabricaBuscaminasJuego() {
		this.buscaminasJuegos = new HashMap<String, BuscaminasJuego>();
	}

	public static FabricaBuscaminasJuego getInstancia() {
		if (instancia == null) {
			instancia = new FabricaBuscaminasJuego();
		}
		return instancia;
	}

	public BuscaminasJuego recuperarJuego(String id) {
		BuscaminasJuego juego = this.buscaminasJuegos.get(id);
		if (juego == null) {
			throw new BuscaminasNoEncontradoException(new StringBuilder(
					MensajesException.MJE_BUSCAMINAS_NO_ENCONTRADO)
					.append(" id: ").append(id).toString());
		}
		return juego;
	}

	public String crearJuego(Integer filas, Integer columnas) {
		BuscaminasJuego juego = new BuscaminasJuego();
		juego.crearTablero(filas, columnas);
		String idJuego = UUID.randomUUID().toString();
		this.buscaminasJuegos.put(idJuego, juego);
		return idJuego;
	}

}
